// pages/mine/mine.js
import Dialog from '@vant/weapp/dialog/dialog';
const {
  getRecommentPetsList,
  getMyLost,
  getLikeList
} = require('../../api/pets')

const Url = "http://localhost:3000/login/";

Page({

  /**
   * 页面的初始数据
   */
  data: {
    btnarr: [
      //   {
      //   title: '领养',
      //   desc: '我领养的宠物'
      // }, 
      {
        title: '地址',
        desc: '我的收货地址',
        gotohttp: "/pages/userhome/userhome"
      },
      {
        title: '购物车',
        desc: '看看我想要什么',
        gotohttp: "/pages/shopcar/shopcar"

      }, {
        title: '订单',
        desc: '查看我的订单',
        gotohttp: "/pages/orderU/orderU"

      }
    ],

    recommentPetsList: "",
    userinfo: {},
    // 认证弹出层
    setShow: false,
    // 认证信息
    Phone: "",
    name: "",
    IDCard: "",

    // 修改资料弹出层
    BJShow: false,
    BJbtn: false,
    Setusername: "",
    oldpass: "",
    newpass1: '',
    newpass2: '',

    // 宠物领养列表
    CWLYlist: [],

    // 我的挂失
    myLostList: [],
    // 收藏
    myLikeList: []
  },

  // 跳转相应功能页

  gotoHttp(event) {

    let lochttp = event.currentTarget.dataset.http

    // console.log(lochttp);
    wx.navigateTo({
      url: lochttp,
    })
  },

  // 用户认证弹窗
  setusertype() {
    this.setData({
      setShow: !this.data.setShow
    })
  },
  // 手机号校验
  Phone(phoneNumber) {
    // 中国大陆手机号码正则表达式
    const regex = /^1[3-9]\d{9}$/;
    return regex.test(phoneNumber);
  },
  // 身份证校验
  IDCard(idCard) {
    // 身份证号码正则表达式
    const regex = /^[1-9]\d{5}(18|19|20)?\d{2}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}(\d|[Xx])$/;
    if (!regex.test(idCard)) {
      return false;
    }
    // 校验码计算
    const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    const checkCodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
    let sum = 0;
    for (let i = 0; i < 17; i++) {
      sum += idCard[i] * weights[i];
    }

    const checkCode = checkCodes[sum % 11];
    const lastChar = idCard[17].toUpperCase();

    return lastChar === checkCode;
  },
  // 汉字校验
  Chinese(str) {
    // 正则表达式：匹配只包含汉字的字符串
    const regex = /^[\u4e00-\u9fa5]+$/;
    return regex.test(str);
  },

  // 用户认证流程
  setyes() {
    // console.log("手机", this.data.Phone , "姓名", this.data.name , "身份证", this.data.IDCard  );
    if (!this.Phone(this.data.Phone)) {
      wx.showToast({
        title: '手机号不合法',
        icon: 'error'
      })
    } else if (!this.Chinese(this.data.name)) {
      wx.showToast({
        title: '姓名只能由汉字组成',
        icon: 'none'
      })
    } else if (!this.IDCard(this.data.IDCard)) {
      wx.showToast({
        title: '身份证不合法',
        icon: 'error'
      })
    } else {
      // 显示加载中提示
      wx.showLoading({
        title: '正在认证...',
        mask: true, // 显示透明蒙层，防止触摸穿透
      });


      let XCXdata = this
      wx.request({
        url: Url + "Authorization", // 请求的接口地址
        method: 'POST', // 请求方式，可以是 GET/POST 等
        data: { // 请求参数
          _id: this.data.userinfo._id,
          Phone: this.data.Phone,
          name: this.data.name,
          IDCard: this.data.IDCard,

        },

        success(res) {
          console.log(res.data); // 请求成功后的处理
          // wx.setStorageSync('token', res.data.token)
          wx.setStorageSync('username', res.data.user.username)
          wx.setStorageSync('userid', res.data.user._id)
          wx.setStorageSync('user', res.data.user)
          wx.hideLoading();
          XCXdata.setData({
            userinfo: res.data.user
          })

          XCXdata.setusertype()
          wx.showToast({
            title: "认证成功!", // 提示信息
            icon: 'success', // 图标类型，可以是 'success', 'loading', 'none'
            duration: 2000 // 提示的延迟时间（毫秒）
          });



        },
        fail(err) {
          wx.showToast({
            title: "请求出错", // 提示信息
            icon: 'error', // 图标类型，可以是 'success', 'loading', 'none'
            duration: 2000 // 提示的延迟时间（毫秒）
          });
          console.error('请求失败:', err); // 请求失败后的处理
        }
      });
    }

  },


  // 修改信息弹窗
  setuserinfo() {
    this.setData({
      BJShow: !this.data.BJShow,
      Setusername: this.data.userinfo.username,
      BJbtn: false,
    })
  },

  // 切换修改信息类型
  switchinfo() {
    this.setData({
      BJbtn: !this.data.BJbtn,
    })
    console.log(this.data.BJbtn);
  },
  // 修改信息流程
  setinfoyes() {
    if (!(this.data.Setusername &&
        this.data.oldpass &&
        this.data.newpass1 &&
        this.data.newpass2)) {
      wx.showToast({
        title: '有必填项为空！',
        icon: "none"
      })
    } else if (this.data.newpass1 !== this.data.newpass2) {
      wx.showToast({
        title: '两次密码不一致！',
        icon: "none"
      })
    } else {
      let XCXdata = this
      wx.request({
        url: Url + "updateinfo", // 请求的接口地址
        method: 'POST', // 请求方式，可以是 GET/POST 等
        data: { // 请求参数
          _id: this.data.userinfo._id,
          username: this.data.Setusername,
          password: this.data.oldpass,
          uppassword: this.data.newpass1,
          setmode: "info"
        },

        success(res) {
          if (res.data.updatecode == 1) {
            console.log(res.data); // 请求成功后的处理
            // wx.setStorageSync('token', res.data.token)
            wx.setStorageSync('username', res.data.user.username)
            wx.setStorageSync('userid', res.data.user._id)
            wx.setStorageSync('user', res.data.user)
            wx.hideLoading();
            XCXdata.setData({
              userinfo: res.data.user,
              BJShow: false,
              oldpass: "",
              newpass1: '',
              newpass2: '',
              BJbtn: false,
            })
            wx.showToast({
              title: "修改成功!", // 提示信息
              icon: 'success', // 图标类型，可以是 'success', 'loading', 'none'
              duration: 2000 // 提示的延迟时间（毫秒）
            });
          } else {
            wx.showToast({
              title: res.data.error, // 提示信息
              icon: 'none', // 图标类型，可以是 'success', 'loading', 'none'
              duration: 2000 // 提示的延迟时间（毫秒）
            });
          }



        },
        fail(err) {
          wx.showToast({
            title: "请求出错", // 提示信息
            icon: 'error', // 图标类型，可以是 'success', 'loading', 'none'
            duration: 2000 // 提示的延迟时间（毫秒）
          });
          console.error('请求失败:', err); // 请求失败后的处理
        }
      });
    }
  },

  // 仅修改用户名
  onlysetusername() {
    let XCXdata = this
    wx.request({
      url: Url + "updateinfo", // 请求的接口地址
      method: 'POST', // 请求方式，可以是 GET/POST 等
      data: { // 请求参数
        _id: this.data.userinfo._id,
        username: this.data.Setusername,
        password: this.data.oldpass,
        uppassword: this.data.newpass1,
        setmode: "username"
      },

      success(res) {
        if (res.data.updatecode == 1) {
          console.log(res.data); // 请求成功后的处理
          // wx.setStorageSync('token', res.data.token)
          wx.setStorageSync('username', res.data.user.username)
          wx.setStorageSync('userid', res.data.user._id)
          wx.setStorageSync('user', res.data.user)
          wx.hideLoading();
          XCXdata.setData({
            userinfo: res.data.user,
            BJShow: false,
            oldpass: "",
            newpass1: '',
            newpass2: '',
            BJbtn: false,
          })
          wx.showToast({
            title: "修改成功!", // 提示信息
            icon: 'success', // 图标类型，可以是 'success', 'loading', 'none'
            duration: 2000 // 提示的延迟时间（毫秒）
          });
        } else {
          wx.showToast({
            title: res.data.error, // 提示信息
            icon: 'none', // 图标类型，可以是 'success', 'loading', 'none'
            duration: 2000 // 提示的延迟时间（毫秒）
          });
        }



      },
      fail(err) {
        wx.showToast({
          title: "请求出错", // 提示信息
          icon: 'error', // 图标类型，可以是 'success', 'loading', 'none'
          duration: 2000 // 提示的延迟时间（毫秒）
        });
        console.error('请求失败:', err); // 请求失败后的处理
      }
    });
  },

  // 修改信息按钮模式
  setbtnsw() {
    if (this.data.BJbtn) {
      this.setinfoyes()
    } else {
      this.onlysetusername()
    }
  },




  // 退出登录
  Esclogin() {
    Dialog.confirm({
        title: '退出登录',
        message: '你确定要退出登录吗?',
      })
      .then(() => {
        wx.removeStorageSync('username')
        wx.removeStorageSync('userid')
        wx.removeStorageSync('user')
        wx.removeStorageSync('token')
        wx.removeStorageSync('selectedAddress')

        this.setData({
          userinfo: {}
        })
        wx.navigateTo({
          url: '/pages/login/login',
        })
      })
      .catch(() => {

      });
  },

  // 跳转详情页（未更改）
  goDetail(event) {
    // console.log(event.currentTarget.dataset.id);
    wx.navigateTo({
      url: `/pages/petsDetail/petsDetail?id=${event.currentTarget.dataset.id}`,
    })
  },

  // 获取领养列表
  getCWLYlist() {
    let XCXdata = this
    wx.request({
      url: "http://localhost:3000/api/examine", // 请求的接口地址
      data: { // 请求参数
        id: this.data.userinfo._id,
      },

      success(res) {
        XCXdata.setData({
          CWLYlist: res.data.list.reverse()
        })
        console.log("领养列表", XCXdata.data.CWLYlist);
      },
      fail(err) {
        wx.showToast({
          title: "请求出错", // 提示信息
          icon: 'error', // 图标类型，可以是 'success', 'loading', 'none'
          duration: 2000 // 提示的延迟时间（毫秒）
        });
        console.error('请求失败:', err); // 请求失败后的处理
      }
    });
  },

  // 前往详情页
  gotoPetPage(event) {
    var id = event.currentTarget.dataset.id;
    // console.log(id);

    wx.navigateTo({
      url: `/pages/petsDetail/petsDetail?id=${id}`
    })
  },
  // 前往挂失详情页

  gotolostPage(event) {
    var id = event.currentTarget.dataset.id;
    // console.log("id",id);
    wx.navigateTo({
      url: `/pages/lostDetail/lostDetail?id=${id}`,
    })
  },



  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    try {
      const user = wx.getStorageSync('user');

      if (!user) {
        wx.showToast({
          title: '请先登录',
        })
        wx.navigateTo({
          url: `/pages/login/login`,
        })
      } else {
        this.setData({
          userinfo: user
        })
        this.getCWLYlist()


        getRecommentPetsList(res => {
          // console.log(res);
          this.setData({
            recommentPetsList: res.data.list
          })
        })
        // 挂失

        getMyLost(res => {
          if (res.data.code == 200) {
            console.log("getMyLost", res.data);
            this.setData({
              myLostList: res.data.list.reverse()
            })
          } else {
            wx.removeStorageSync('username')
            wx.removeStorageSync('userid')
            wx.removeStorageSync('user')
            wx.removeStorageSync('token')
            this.setData({
              userinfo: {}
            })
            wx.navigateTo({
              url: '/pages/login/login',
            })

            console.log("err", res);

          }

        })


        // 收藏列表
        getLikeList(res => {
          console.log("getLikeList", res.data);
          this.setData({
            myLikeList: res.data.list.reverse()
          })
        })


        // console.log("userinfo", this.data.userinfo);
      }
    } catch (e) {
      // console.log('检查登录状态失败:', e);
      wx.showToast({
        title: '请先登录',
      })
      wx.navigateTo({
        url: `/pages/login/login`,
      })
    }




  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    console.log("下拉刷新");
    try {
      const user = wx.getStorageSync('user');

      if (!user) {
        wx.showToast({
          title: '请先登录',
        })
        wx.navigateTo({
          url: `/pages/login/login`,
        })
      } else {
        this.setData({
          userinfo: user
        })
        this.getCWLYlist()

        getRecommentPetsList(res => {
          // console.log(res);
          this.setData({
            recommentPetsList: res.data.list
          })
        })
        // 挂失

        getMyLost(res => {
          if (res.data.code == 200) {
            console.log("getMyLost", res.data);
            this.setData({
              myLostList: res.data.list.reverse()
            })
          } else {
            wx.removeStorageSync('username')
            wx.removeStorageSync('userid')
            wx.removeStorageSync('user')
            wx.removeStorageSync('token')
            this.setData({
              userinfo: {}
            })
            wx.navigateTo({
              url: '/pages/login/login',
            })

            console.log("err", res);

          }

        })


        // 收藏列表
        getLikeList(res => {
          console.log("getLikeList", res.data);
          this.setData({
            myLikeList: res.data.list.reverse()
          })
        })


        // console.log("userinfo", this.data.userinfo);
      }
    } catch (e) {
      // console.log('检查登录状态失败:', e);
      wx.showToast({
        title: '请先登录',
      })
      wx.navigateTo({
        url: `/pages/login/login`,
      })
    }




  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})